#include <bits/stdc++.h>
#define int long long
using namespace std;

const int maxn = 3e5+5;
int arr[maxn];
int arr_cnt[maxn];
int n, q;

int get(int pos){
	int cnt = n-pos;
	return (cnt)* (cnt-1) / 2 ; //  cnt 中选 2 个
}



void solve(){
	cin >> n >> q;
	for(int i=1;i<=n;i++){
		cin >> arr[i];
	}
	// 先排序
	sort(arr+1, arr+1+n);
	// 处理出每个数可以当最小值的三重石的个数
	arr_cnt[1] = get(1); // 处理第一个
	for (int i=2; i<=n;i++) {
		arr_cnt[i] = get(i); // 注意这里面要防止重复, 即 当 arr[i] = arr[i-1] 时, 他们的 cnt 并不相同, 如果相同的话就重复了
		arr_cnt[i] += arr_cnt[i-1];
	}
	int k = 0;
	for(int i=1;i<=q;i++){
		cin >> k;
		cout << arr[lower_bound(arr_cnt+1, arr_cnt+1+n, k) - arr_cnt] << '\n';
	}
}




signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int t;
	t=1;
	while(t--){
		solve();
	}
}
